package common

import (
	"github.com/dgrijalva/jwt-go"
)

// 以下代码用于生成和解析 JSON Web Token (JWT) 的函数
// jwtKey是用于签名和验证的密钥
var jwtKey = []byte("a_secret_crect")

type Claims struct {
	UserID int
	jwt.StandardClaims
}

// ReleaseToken 生成 JWT
//func ReleaseToken(user model.User) (string, error) {
//	expirationTime := time.Now().Add(7 * 24 * time.Hour)
//	claims := &Claims{
//		UserID: user.Id,
//		StandardClaims: jwt.StandardClaims{
//			//过期时间
//			ExpiresAt: expirationTime.Unix(),
//			IssuedAt:  time.Now().Unix(),
//			Issuer:    "login",
//			Subject:   "user token",
//		},
//	}
//	token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
//	tokenString, err := token.SignedString(jwtKey)
//	if err != nil {
//		return " ", err
//	}
//	return tokenString, nil
//}

// ParseToken 解析 JWT
func ParseToken(tokenString string) (*jwt.Token, *Claims, error) {
	claims := &Claims{}
	token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (i interface{}, err error) {
		return jwtKey, nil
	})
	return token, claims, err
}
